package com.foreveross.mofang.datapersistence.application;

import java.util.List;
import java.util.Map;

import com.foreveross.mofang.datapersistence.application.vo.FileInfo;
import com.foreveross.mofang.datapersistence.application.vo.HbaseQueryVo;

/**
 * 一句话描述
 * 
 * @author fb
 */
public interface HbaseDataOperationApplication {

	/**
	 * 创建hbase表与族
	 * 
	 * @param tableName
	 *            表名
	 * @param familys
	 *            族集合
	 */
	void createTable(String tableName, List<String> familys);

	/**
	 * hbase数据添加，qualifier, family在map的key中坚线分隔第一个，第二个为列。
	 * 
	 */
	void addRecord(String tableName, Map<String, Object> data)  throws Exception;
	
	/**
	 * hbase批量数据添加，qualifier, family在map的key中坚线分隔第一个，第二个为列。
	 * 
	 */
	void batchAddRecord(String tableName, List<Map<String, Object>> datas)  throws Exception;
	
	/**
	 * 下载文件信息持久化
	 * 
	 * @param fileInfo
	 */
	void saveDataFileInfo(FileInfo fileInfo);

	/**
	 * 删除一行记录
	 */
	void delOneRecord(String tableName, String rowKey) throws Exception;

	/**
	 * 删除多行记录
	 * 
	 * @param tableName
	 * @param rowKeys
	 * @throws Exception
	 */
	public abstract void delMultRecord(String tableName, String... rowKeys) throws Exception;

	/**
	 *  查找一行记录
	 *  
	 * @param tableName
	 * @param rowKey
	 * @return Map&lt;String, String&gt;
	 * @throws Exception
	 */
	Map<String, Object> getRecord(String tableName, String rowKey) throws Exception;

	/**
	 * 查询多行记录
	 * 
	 * @throws Exception
	 */
	List<Map<String, Object>> queryRecords(String tableName, HbaseQueryVo queryParams, int pageSize) throws Exception;

}
